#!/usr/bin/env node
// Node CLI 应用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macOS 系统下还需要修改此文件的读写权限为 755
// 具体就是通过 chmod 755 cli.js 实现修改

// 脚手架的工作过程：
// 1、通过命令行交换询问用户问题 
// 2、根据用户回答的结果产生文件
//通过inquirer模块中prompt方法发起命令行询问,得到问题返回值，
//脚手架根据模板生成项目目录，要在根目录下新建一个templates，用于存放模板文件

//通过then接受命令行询问得到的答案，
//将模板下的文件全部转换到目标目录
//首先明确模板目录，path.join(__dirname,'templates')
//目标目录，process.cwd()
//通过fs.readdir读取模板文件，将得到的文件通过模板引擎ejs.renderFile渲染相对路径对应得文件
//将结果通过fs.writeFileSync写入目标目录



const fs=require('fs')
const path=require('path')
const inquirer=require('inquirer')
const ejs=require('ejs')
inquirer.prompt([
    {
        type:'input',//命令行的输入方式
        name:'name',//问题返回值的键
        message:'Project name?'//显示的问题
    }

])
//根据模板生成项目目录 根目录下新建一个templates
.then(anwsers=>{ //接收答案
    //明确模板目录
    const tmpDir=path.join(__dirname,'templates')
    //目标目录
    const destDir=process.cwd()
    //将模板下的文件全部转换到目标目录
    fs.readdir(tmpDir,(err,files)=>{
        if(err) throw err
        files.forEach(file => {
            //通过模板引擎渲染相对路径对应得文件
            ejs.renderFile(path.join(tmpDir,file),anwsers,(err,result)=>{
                if(err) throw err
                //将结果写入目标文件路径
                fs.writeFileSync(path.join(destDir,file),result)
            })
        });
    })
})


